National accounts


National accounts
NRX01_raw <- 
  statgl_url("NRX01", lang = language) %>%
  statgl_fetch(
    units          = "L",
    time           = px_top(5),
    "account name" = px_all(),
    .col_code      = TRUE
  ) %>% 
  as_tibble()
  
NRX01 <- 
  NRX01_raw %>% 
  arrange(desc(time)) %>% 
  mutate(
    time = time %>% fct_inorder(),
    `account name` = `account name` %>% str_remove_all("[:digit:]|[:punct:]|\\+") %>% trimws(),
    `account name` = `account name` %>% fct_inorder()
    ) %>% 
  drop_na() %>% 
  spread(time, value)
  
NRX01 %>% 
  select(-units) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = NRX01[["units"]] %>% table()) %>% 
  row_spec(c(8, 19), bold = TRUE)
2023 2022 2021 2020 2019
Current prices, million dkk
Output 38.457 37.069 34.183 32.824 32.633
Taxes less subsidies on products 919 875 754 748 769
Taxes on products 1.204 1.158 1.024 998 1.010
Subsidies on products 285 283 270 250 240
Imports of goods and services 11.710 11.728 10.277 9.438 10.225
Imports of goods 6.620 7.295 6.571 6.268 6.870
Imports of services 5.089 4.432 3.706 3.170 3.355
Total Resources 51.085 49.672 45.214 43.010 43.627
Intermediate consumption 16.457 15.638 14.230 13.359 13.412
Final consumption expenditure 17.028 16.494 16.248 15.708 15.760
Private consumption expenditure 7.469 7.286 7.083 6.892 7.005
Off Government consumption expenditure 9.560 9.209 9.164 8.816 8.754
Individual consumption expenditure 5.720 5.509 5.294 5.100 5.158
Collective consumption expenditure 3.840 3.699 3.871 3.716 3.596
Gross fixed capital formation 8.250 8.441 7.684 6.673 6.251
Exports of goods and services 9.351 9.099 7.052 7.270 8.205
Exports of goods 6.778 6.775 5.372 5.716 6.008
Exports of services 2.573 2.324 1.680 1.554 2.197
Total use 51.085 49.672 45.214 43.010 43.627


See the table in our Statbank: NRX01

NRX0318_raw <- 
  statgl_url("NRX0318", lang = language) %>% 
  statgl_fetch(
    units     = "L",
    industry  = paste0("0100", LETTERS[1:11]),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()


NRX0318 <- 
  NRX0318_raw %>% 
  arrange(desc(time)) %>% 
  mutate(
    time = time %>% fct_inorder(),
    industry = industry %>% fct_reorder(value, .fun = sum, .desc = TRUE)
    ) %>% 
  spread(time, value) %>% 
  mutate(industry = industry %>% str_remove("A|B|C|D|E|F|G|H|I|J|K"))



NRX0318 %>% 
  select(-units) %>% 
  rename(" " = 1) %>%  
  statgl_table() %>% 
  pack_rows(index = NRX0318[["units"]] %>% table())
2023 2022 2021 2020 2019
Current prices, million dkk
Public adm. and service 10.137 9.755 9.660 9.311 9.277
Fishery and hunting 5.721 5.374 4.743 4.797 5.039
Construction business 5.308 4.971 5.134 4.526 3.651
Finance and business 4.162 4.004 3.550 3.279 3.254
Transport 4.133 3.849 3.327 3.004 3.335
Trade 3.090 3.094 2.743 2.759 2.776
Industry 2.280 2.435 1.889 2.018 2.165
Post, tele, IT, radio, TV etc. 1.297 1.273 1.244 1.219 1.262
Supply and renovation 994 947 963 956 903
Hotels and restaurants 1.138 1.064 818 650 729
Extraction of raw materials 197 302 112 306 242


See the table in our Statbank: NRX0318

NRX10_raw <- 
  statgl_url("NRX10", lang = language) %>% 
  statgl_fetch(
    units = "K",
    account = c("01", "02", "04"),
    time = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

NRX10 <- 
  NRX10_raw %>% 
  arrange(desc(time)) %>% 
  mutate(time = time %>% fct_inorder()) %>% 
  spread(time, value)

NRX10 %>% 
  select(-units) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = NRX10[["units"]] %>% table())
2023 2022 2021 2020 2019
2010-prices, chained values
Annual real growth in percent 0,9 2 1,6 0,3 2,8
GDP, million DKK 16.260,4 16.121 15.804,0 15.549,9 15.511,0
Per capita, 1.000 DKK 287,5 285 280,4 277,6 277,4


See the table in our Statbank: NRX10

NRX13_raw <- 
  statgl_url("NRX13", lang = language) %>% 
  statgl_fetch(
    time      = px_top(5),
    Kode      = paste0("VBVT", LETTERS[1:11]),
    .col_code = TRUE
  ) %>% 
  as_tibble()


NRX13 <-
  NRX13_raw %>% 
  arrange(desc(time)) %>% 
  mutate(
    time = time %>% fct_inorder(),
    Kode = Kode %>% str_remove("A|B|C|D|E|F|G|H|I|J|K") %>% trimws(),
    Kode = Kode %>% fct_reorder(value, .fun = mean, .desc = TRUE)
  ) %>% 
  spread(time, value)

NRX13 %>% 
  rename(" " = 1) %>% 
  statgl_table()
2023 2022 2021 2020 2019
Fishery and hunting 0,18 0,36 1,55 -0,93 0,98
Trade -0,31 0,72 -0,23 0,75 0,77
Construction business 0,82 -1,83 -0,48 1,97 1,13
Transport 0,80 -0,48 1,12 -0,48 0,09
Finance and business 0,65 0,56 0,56 -1,03 0,02
Public adm. and service 0,23 -0,28 -0,11 -0,68 1,38
Supply and renovation -0,17 0,02 0,02 0,64 -0,02
Extraction of raw materials -0,29 0,50 -0,57 0,25 0,27
Hotels and restaurants -0,04 0,72 0,43 -0,73 -0,27
Post, tele, IT, radio, TV etc. -0,02 0,16 -0,12 0,21 -0,30
Industry -0,61 1,62 -1,39 0,73 -0,57


See the table in our Statbank: NRX13


Last updated: 22. juni 2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCnsNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQp9DQoNCnsgIA0KbGFuZ3VhZ2UgIDwtIHBhcmFtcyRsYW5nDQpvcHRpb24gICAgPC0gcGFzdGUwKCI/bGFuZz0iLCBsYW5ndWFnZSwgIiZzZWxlY3QiKQ0KbG9nbyAgICAgIDwtIHBhc3RlMChnZXR3ZCgpLCIvYWRkL2xvZ28uZ2lmIikNCnR4dCAgICAgICA8LSByZWFkX3lhbWwocGFzdGUwKGdldHdkKCksICIvYWRkL3R4dC55bWwiKSwgZmlsZUVuY29kaW5nID0gIklTTy04ODU5LTEiKQ0Kc291cmNlICAgIDwtIHR4dCRzb3VyY2VbbGFuZ3VhZ2VdICU+JSB1bmxpc3QoKQ0KfQ0KDQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCg0KYGBgDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KLmFjY29yZGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5MTk5MDA7DQogIGNvbG9yOiB3aGl0ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBwYWRkaW5nOiAxOHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgdHJhbnNpdGlvbjogMC40czsNCn0NCg0KLmFjdGl2ZSwgLmFjY29yZGlvbjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmOTcyNDI7DQp9DQoNCi5hY2NvcmRpb246YWZ0ZXIgew0KICBjb250ZW50OiAnXDAwMkInOw0KICBjb2xvcjogIzc3NzsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLWxlZnQ6IDVweDsNCn0NCg0KLmFjdGl2ZTphZnRlciB7DQogIGNvbnRlbnQ6ICJcMjIxMiI7DQp9DQoNCi5wYW5lbCB7DQogIHBhZGRpbmc6IDBweCA1cHggMHB4IDVweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIG1heC1oZWlnaHQ6IDA7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsNCn0NCg0KZGV0YWlscyB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQpkZXRhaWxzID4gc3VtbWFyeSB7DQogIHBhZGRpbmc6IDRweCAxMnB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2Y5OTsNCiAgYm9yZGVyOiBzb2xpZDsNCiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6IHdoaXRlOw0KfQ0KDQpkZXRhaWxzW29wZW5dID4gc3VtbWFyeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmYWE0MWE7DQp9DQoNCg0KLnRpdGxlIHsNCiAgY29sb3I6ICMxYjU0NjM7DQogIGZvbnQtc2l6ZTogMzZweDsNCn0NCg0KDQoucGVyc29uZXIgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwNDQ1OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouw7hrb25vbWkgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwN0Y5OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMC4xcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQoudHbDpnJnw6VlbmRlIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICNmYWE0MWE7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLmNvbnRhaW5lciB7DQogIHdpZHRoOiBpbmhlcml0Ow0KfQ0KDQouc2Nyb2xsLTEwMCB7DQogIG1heC1oZWlnaHQ6IDEwMDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsNCn0NCg0KDQpwcmUgew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCn0NCg0KcHJlW2NsYXNzXSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KfQ0KDQpgYGANCg0KPGJyPg0KPGJyPg0KDQo8Y2VudGVyPg0KDQotLS0NCiANCiMgW2ByIHR4dCROUiR0aXRsZVtsYW5ndWFnZV1gXXsudGl0bGV9DQogDQotLS0NCjwvY2VudGVyPg0KDQo8ZGV0YWlscyBvcGVuPiA8c3VtbWFyeT4gYHIgdHh0JE5SJHRpdGxlW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIE5SWDAxfQ0KDQpOUlgwMV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXRzICAgICAgICAgID0gIkwiLA0KICAgIHRpbWUgICAgICAgICAgID0gcHhfdG9wKDUpLA0KICAgICJhY2NvdW50IG5hbWUiID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlICAgICAgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KICANCk5SWDAxIDwtIA0KICBOUlgwMV9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGBhY2NvdW50IG5hbWVgID0gYGFjY291bnQgbmFtZWAgJT4lIHN0cl9yZW1vdmVfYWxsKCJbOmRpZ2l0Ol18WzpwdW5jdDpdfFxcKyIpICU+JSB0cmltd3MoKSwNCiAgICBgYWNjb3VudCBuYW1lYCA9IGBhY2NvdW50IG5hbWVgICU+JSBmY3RfaW5vcmRlcigpDQogICAgKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCiAgDQpOUlgwMSAlPiUgDQogIHNlbGVjdCgtdW5pdHMpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMVtbInVuaXRzIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKGMoOCwgMTkpLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNDQyOWFkN2YtMzcyZi00MGU0LWExMDMtZWViMzQxYzZiZGI1Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiTlJYMDMxOCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDAzMTh9DQoNCk5SWDAzMThfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJOUlgwMzE4IiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyAgICAgPSAiTCIsDQogICAgaW5kdXN0cnkgID0gcGFzdGUwKCIwMTAwIiwgTEVUVEVSU1sxOjExXSksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KTlJYMDMxOCA8LSANCiAgTlJYMDMxOF9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGluZHVzdHJ5ID0gaW5kdXN0cnkgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAuZGVzYyA9IFRSVUUpDQogICAgKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGUoaW5kdXN0cnkgPSBpbmR1c3RyeSAlPiUgc3RyX3JlbW92ZSgiQXxCfEN8RHxFfEZ8R3xIfEl8SnxLIikpDQoNCg0KDQpOUlgwMzE4ICU+JSANCiAgc2VsZWN0KC11bml0cykgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lICANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMzE4W1sidW5pdHMiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiTlJYMDMxOCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOTA3MTg4MzYtYjFjYy00ZWFkLWFkNmEtYTg2OGNiMDdkN2UzIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJOUlgxMCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDEwfQ0KDQpOUlgxMF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDEwIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyA9ICJLIiwNCiAgICBhY2NvdW50ID0gYygiMDEiLCAiMDIiLCAiMDQiKSwNCiAgICB0aW1lID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCk5SWDEwIDwtIA0KICBOUlgxMF9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCg0KTlJYMTAgJT4lIA0KICBzZWxlY3QoLXVuaXRzKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gTlJYMTBbWyJ1bml0cyJdXSAlPiUgdGFibGUoKSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgxMCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNTQ1MzM0NTQtNjM5MS00Y2MwLTkwYTEtZTUxODQ3NmY1NTMxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJOUlgxMyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDEzfQ0KDQpOUlgxM19yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDEzIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoNSksDQogICAgS29kZSAgICAgID0gcGFzdGUwKCJWQlZUIiwgTEVUVEVSU1sxOjExXSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KDQpOUlgxMyA8LQ0KICBOUlgxM19yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIEtvZGUgPSBLb2RlICU+JSBzdHJfcmVtb3ZlKCJBfEJ8Q3xEfEV8RnxHfEh8SXxKfEsiKSAlPiUgdHJpbXdzKCksDQogICAgS29kZSA9IEtvZGUgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gbWVhbiwgLmRlc2MgPSBUUlVFKQ0KICApICU+JSANCiAgc3ByZWFkKHRpbWUsIHZhbHVlKQ0KDQpOUlgxMyAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgxMyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvM2MwNTc3NGUtZDczOS00MGVjLThkMjEtNmVkZmU5YzI4ZmEyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KDQo8aHIgc3R5bGU9ImJvcmRlcjoxcHggcmlkZ2UgbGlnaHRncmF5Ij4gPC9ocj4NCjxjZW50ZXI+IDxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiA8L2NlbnRlcj4NCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K